<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数</title>
</head>

<body>
    <script>
        /*分析函数原型：函数名、形参（接受函数调用时传入的数据）
           返回值
        */
        //声明函数，计算传入的数组中所有元素的和
        // function getsum(arr){
        //     var sum=0;
        //     for(var i=0;i<arr.length;i++){
        //         sum+=arr[i];
        //     }
        //     return sum;
        // }
        // var total=[1,2,3,4,5];
        // console.log(getsum(total));


        /*函数功能；根据月份返回这个月天数
        形参：month，传入的月份
        返回值：天数*/
        // function getDay(month,year){
        //     var days=0;
        //     switch(month){
        //         case 1:
        //         case 3:
        //         case 5:
        //         case 7:
        //         case 8:
        //         case 10:
        //         case 12:
        //             total=31;
        //             break;
        //         case 4:
        //         case 6:
        //         case 9:
        //         case 11:
        //             total=30;
        //             break;
        //         case 2:
        //             total=28;
        //             if(((y%4==0) && (y%100!==0))||(y%400==0)){
        //                 total++;
        //             }
        //             break;
        //     }
        // }

        //js中，函数可以不写任何形参，直接到arguments属性中读取实参
        // function fn() {
        //     console.log('所有传入函数的实参')
        //     for (var i = 0; i < arguments.length; i++) {
        //         console.log(arguments[i]);
        //     }
        // }
        // fn(1, 2, 3);

        //函数重载：多个函数函数名相同，但是参数不同
        //   参数不同：数据类型不同；参数个数不同；参数顺序不同
        //js中无函数重载
        /*java中声明函数
        int add(int x,int y){
            return x+y;
        }
        int add(int x,int y,int z){
            return x+y+z;
        }
        double add(double x,double y){
            return x+y;
        }

        add(1,2);
        add(1.5,2.3);
        */

        //词法扫描时，会将var声明的变量，function声明的函数，记录到词法环境对象中

        //自定义函数方式
        // fn1();
        // function fn1() {
        //     alert('fn1');
        // }

        //函数表达式方法
        //此声明法不可提前调用，会报错  fn2：undefined
        // fn2();   //fn2 is not a function
        var fn2 = function () {
            alert('fn2')
        }
        // fn2();
    </script>
</body>

</html>